# 导入所需的库
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 读取 CSV 文件
df = pd.read_csv('C:/Users/Administrator/Desktop/car_prices.csv')

# 查看数据集行数和列数
rows, columns = df.shape

if rows < 100 and columns < 20:
    # 短表数据（行数少于100且列数少于20）查看全量数据信息
    print('数据全部内容信息：')
    print(df.to_csv(sep='\t', na_rep='nan'))
else:
    # 长表数据查看数据前几行信息
    print('数据前几行内容信息：')
    print(df.head().to_csv(sep='\t', na_rep='nan'))

# 查看数据集中不同列的唯一值数量
for col in df.columns:
    unique_values = df[col].nunique()
    print(f'{col}列的唯一值数量：{unique_values}')

# 查看数据集中不同列的唯一值
for col in df.columns:
    unique_values = df[col].unique()
    print(f'{col}列的唯一值：{unique_values}')

# 分析影响二手车销售的因素
import matplotlib.pyplot as plt

# 统计不同年份的销售数量
year_counts = df['year'].value_counts().sort_index()

# 统计不同品牌的销售数量
make_counts = df['make'].value_counts()

# 统计不同车型的销售数量
model_counts = df['model'].value_counts()

# 统计不同颜色的销售数量
color_counts = df['color'].value_counts()

# 统计不同车况的销售数量
condition_counts = df['condition'].value_counts()

# 统计不同里程数的销售数量
odometer_counts = df['odometer'].value_counts()

# 绘制不同年份的销售数量柱状图
plt.figure(figsize=(10, 6))
year_counts.plot(kind='bar')
plt.xlabel('year')
plt.ylabel('sale volume')
plt.title('sale volume in different years')
plt.xticks(rotation=45)
plt.show()

# 选择销售量前30的品牌
top_30_make = make_counts.head(30)

# 绘制销售量前30的品牌的销售数量柱状图
plt.figure(figsize=(10, 6))
top_30_make.plot(kind='bar')
plt.xlabel('brand')
plt.ylabel('Sales volume')
plt.title('Sales volume of top 30 brands')
plt.xticks(rotation=45)
plt.show()

# 选择销售量前30的车型
top_30_models = model_counts.head(30)

# 绘制销售量前30的车型的销售数量柱状图
plt.figure(figsize=(10, 6))
top_30_models.plot(kind='bar')
plt.xlabel('Model')
plt.ylabel('Sales volume')
plt.title('Sales volume of top 30 models')
plt.xticks(rotation=45)
plt.show()

# 选择销售量前30的颜色
top_30_colors = color_counts.head(30)

# 绘制销售量前30的颜色的销售数量柱状图
plt.figure(figsize=(10, 6))
top_30_colors.plot(kind='bar')
plt.xlabel('Color')
plt.ylabel('Sales volume')
plt.title('Sales volume of top 30 colors')
plt.xticks(rotation=45)
plt.show()

# 绘制不同车况的销售数量柱状图
plt.figure(figsize=(10, 6))
condition_counts.plot(kind='bar')
plt.xlabel('condition')
plt.ylabel('sale volume')
plt.title('sale volume of different conditions')
plt.xticks(rotation=45)
plt.show()

# 绘制不同里程数的销售数量柱状图
plt.figure(figsize=(10, 6))
odometer_counts.plot(kind='bar')
plt.xlabel('mileage')
plt.ylabel('sale volume')
plt.title('sale volume of different mileages')
plt.xticks(rotation=45)
plt.show()